MySQL IF THEN 在 WHERE 子句中
全部标签 我有几个查询获取将来要删除的行的ID号。行号被放入一个字符串中并放置在下面的查询中(您看到“2”的地方)。我希望结果忽略这些行(就像它们已经被删除一样)。SELECTMAX(T1.id)ASMAXidFROMtransactionsAST1WHEREidNOTIN(2)GROUPBYT1.positionORDERBYT1.position我的猜测是我需要用“HAVING”替换“WHERE”行,但我找不到“NOTHAVING”语法。这个查询的当前编写方式,如果位置的最大ID列在WHERE子句中,它不会返回T1.position的行。如何获取此查询以提供T1.position的最大ID同
比如我有一个语句"SELECT*FROMReportsWHEREStartDate>=?WHEREEndDate但有时网页上的某些输入字段未填写,所以我不得不不考虑这种情况。即我没有填写开始日期,所以声明必须是"SELECT*FROMReportsWHEREEndDate有3种不同的条件。那么,我是否必须编写8个不同的语句和DAO方法来完成任务?真的吗?也许还有其他解决方案?编辑:我用的是MySQL/ 最佳答案 更改您的SQL以适应空值。因为您没有告诉我们您正在使用哪个数据库,所以我将使用“vanilla”SQL:SELECT*FR
我有两个看起来像这样的表表1:idvaluenumber表2:idnamevaluerid我想将value从TABLE2复制到TABLE1,其中TABLE2.rid=TABLE1.id。我尝试了以下方法:INSERTINTOTABLE1(value)SELECTvalueFROMTABLE2WHERETABLE2.rid=TABLE1.id.但是我不能这样做,因为我还没有加入TABLE1和TABLE2——如果我尝试这样做,我会收到语法错误。任何帮助将不胜感激。 最佳答案 您需要带有JOIN子句而不是INSERT语句的UPDATE语句
我想使用子查询在MySQL中创建ViewCREATEORREPLACEVIEW`V_TASK_TRANSFER`(`REF_ID`,`DATE_CREATE`,`DATE_TRX`,`ACCOUNT_NO`,`TO_ACCOUNT_NO`,`TO_NAME`,`CURRENCY_CODE`,`AMOUNT`,`TASK_TYPE`,`NAME_E`,`NAME_I`,`REF_NO`,`EXECUTION_TYPE`,`REVIEW_COUNT`,`REVIEW_NEED`,`APPROVE_COUNT`,`APPROVE_NEED`,`TRX_COUNT_SUCCESS`,`TRX_
假设我有一个包含以下内容的表格:mysql>select*fromtest;+----+------+|id|val|+----+------+|1|1||2|1||3|1||4|1||5|2||6|2||7|2||8|2|+----+------+8rowsinset(0.00sec)mysql>现在我使用groupby子句运行错误的SQL查询并且没有对id列进行任何聚合并得到错误的结果:mysql>selectid,valfromtestgroupbyval;+----+------+|id|val|+----+------+|1|1||5|2|+----+------+2rows
谁能告诉我,这是否可以通过事件记录来实现?如何实现?$this->db->select('*');$this->db->from('table1');$this->db->join('table2','table1.id=table2.fi_id','left');$this->db->having('table1.second_id','table2.fi_second_id',false);$query=$this->db->get();问题在于,'table2.fi_second_id'始终被视为字符串-而不是数据库字段。也用'where'试过这个-这是同样的问题。谢谢
我正在尝试编写以下语句:WHEREfieldLIKE'Pandora'ANDfieldNotLike'radio','digital','internet';翻译:选择领域类似于Pandora,而不是radio、数字或互联网。有没有一种方法可以在不写NotLike3次且中间使用AND的情况下编写此语句?谢谢 最佳答案 如果“字段”不仅仅是单个单词,则需要执行以下操作:SELECT*FROMtableWHEREfieldLIKE'%Pandora%'ANDfieldNOTLIKE'%radio%'ANDfieldNOTLIKE'%in
我有一个返回逗号分隔整数的查询喜欢:selectGROUP_CONCAT(ids)fromtable2现在我想在另一个查询中使用该结果喜欢:select*fromtable1wherecolumnin(selectGROUP_CONCAT(ids)fromtable2)在这种情况下,它只会考虑IN子句中的第一个值。 最佳答案 我同意@Alma的观点,这不能用IN来完成,你可以用FIND_IN_SET来完成。,但如果你能用IN做到这一点,那可能是更好的方法:SELECT*FROMtable1WHEREfind_in_set(ids,(
我正在尝试制作一个用于学习目的的聊天网站,因此在此过程中,我希望最后30条消息按升序显示w.r.t.时间。比如,最新的消息在底部,最旧的消息在顶部。经过大量的谷歌搜索,但没有找到任何有帮助的解决方案,我不得不问这个问题。这是MySQL语句。它返回我想要的数据,但按降序排列。也就是说,最新的在顶部。即使我将ASC更改为DESC,也没有任何反应。SELECT*FROM(SELECTmsg,senderFROMchatlogsWHEREuser1='userone'ANDuser2='usertwo'ORDERBY'timeofmsg'DESCLIMIT30)subORDERBY'sub.t
我的更新查询似乎无法进行下一步。我能够成功查看与选择相关的列没问题:SELECTsales_flat_order_grid.entity_id,sales_flat_order_grid.increment_id,sales_flat_order.coupon_codeFROMsales_flat_order_gridINNERJOINsales_flat_orderONsales_flat_order_grid.entity_id=sales_flat_order.entity_idWHEREsales_flat_order_grid.increment_id="12345678";